package com.campus.help.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.campus.help.entity.Message;
import com.campus.help.vo.MessageVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 消息Mapper接口（简化版）
 */
@Mapper
public interface MessageMapper extends BaseMapper<Message> {

    /**
     * 分页查询用户消息
     */
    List<MessageVO> selectUserMessages(@Param("userId") Long userId, 
                                      @Param("type") String type, 
                                      @Param("offset") Long offset, 
                                      @Param("size") Long size);

    /**
     * 统计用户消息总数
     */
    Long countUserMessages(@Param("userId") Long userId, @Param("type") String type);

    /**
     * 查询用户的未读消息统计
     */
    Map<String, Object> getUnreadStatsByUserId(@Param("userId") Long userId);

    /**
     * 标记单条消息为已读
     */
    int markAsRead(@Param("messageId") Long messageId, @Param("userId") Long userId);

    /**
     * 标记用户所有消息为已读
     */
    int markAllAsRead(@Param("userId") Long userId, @Param("type") String type);

    /**
     * 批量插入消息（用于广播）
     */
    int batchInsert(@Param("list") List<Message> messages);

    /**
     * 逻辑删除单条消息
     */
    int deleteMessage(@Param("messageId") Long messageId, @Param("userId") Long userId);

    /**
     * 逻辑删除用户的所有消息
     */
    int deleteAllMessages(@Param("userId") Long userId, @Param("type") String type);
}